今天呢我們要來介紹現在常用的溫濕度感測器DHT22,為什麼一開始要先介紹這個感測器呢
因為他容易使用且價格便宜,適合初學者使用
我們先來看看DHT22的圖片
圖中可以看到他只有3個接腳其中
DAT是傳送資料的腳位
VCC是電源的腳位(3.3V~5V)
GND是接地
就會有人問有了這個SENSOR就可以開始接收資料嗎
在Arduino中 並沒有內建DHT22的函式庫,所以你無法辨識DHT22的回傳資料
所以就要去下載官方的函式庫,有兩種方式可以下載:
第一是去官方下載然後自己匯入函式庫
官方載點:https://www.arduinolibraries.info/libraries/dht-sensor-library
第二是去arduino IDE上面 sketch -> include library -> Manage libraries 搜尋DHT22 然後下載DHT Sensor Library就可以使用他們的函式庫
一開始 你不會使用他們的函式庫,所以要用到DAY2說的範例程式
點開 examples底下可以看到 客製化函式庫的範例程式 點開DHT Sensor Library的DHTtester刪掉一些關於範例的註解
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
dht.begin();
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
}
將程式燒進arduino裡面DAT - 2
VCC - 5V
GND - GND
用Serial監視視窗看感測器是否正常
如果正常應該會跑出這個畫面
但測試程式中會有很多我們不需要的像是華氏溫度,所以要修改程式只留我們需要的
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(1000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t) ) {
Serial.println(F("感測器讀取失敗"));
return;
}
Serial.print(F("濕度: "));
Serial.print(h);
Serial.print(F("% 溫度: "));
Serial.print(t);
Serial.println("°C");
}
這樣輸出就會變成
這樣大家就做好一個自己的溫濕度感測器的讀取程式了
DAY6 會繼續介紹DHT22感測器與使用讀取到的資料做控制